Arrangement for synchronizing media files with portable devices

ABSTRACT

Arrangements are provided which improve the efficiency of the synchronization process. The same ensure that synchronizations of large quantities of content can be completed with a minimum of delay. One method prioritizes the various tasks that are to be performed prior to synchronization. Another method initiates dependent tasks while parsing a synchronization tasks list. Yet another method allows modification of an in-process synchronization operation to allow new synchronization tasks to be accomplished within the context of the same process, negating the need to restart synchronization.

STATEMENT OF RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/468,142, field Aug. 25, 2014, entitled, “ARRANGEMENT FORSYNCHRONIZING MEDIA FILES WITH PORTABLE DEVICES” which is a continuationof U.S. application Ser. No. 12/031,708, filed Feb. 15, 2008, now U.S.Pat. No. 8,818,941 issued Aug. 26, 2014, entitled “ARRANGEMENT FORSYNCHRONIZING MEDIA FILES WITH PORTABLE DEVICES” which claims thebenefit of U.S. Provisional Patent Application Ser. No. 60/987,079,filed Nov. 11, 2007, entitled “Arrangement For Synchronizing Media FilesWith Portable Devices,” which are both incorporated herein by referencein their entirety.

BACKGROUND

Current systems and methods that perform synchronization of contentitems between computers and portable storage or playback devices havecertain disadvantages. For example, one difficulty is the length of thesynchronization procedure. Synchronization procedures may be delayed,e.g., by bandwidth limitations for the input/output process asdetermined by the USB or other connection protocol. A similar limitationpertains to the processor speed. For example, if a file requiresconversion before being transferred from a computer to a portableplayer, the conversion slows and/or delays the synchronization processconsiderably. A related limitation concerns when a file requiresdownload to a local personal computer prior to synchronization on adevice, which is often the case with digital music listed in a localcatalog but actually stored on an internet web store for downloadon-demand. The download requires completion before the file can betransferred.

Another type of limitation is seen when a user's media content libraryexceeds the storage capacity of the portable player. Current systems forchoosing which items to synchronize, and which to avoid, including smartplaylists (i.e., rule-based selection mechanisms like “All songs in mylibrary where genre does not equal ‘Christmas’”), are generallycomplicated and confusing to many users.

A further type of limitation relates to the cumbersome nature of currentsynchronization procedures, i.e., a user must indicate or build a listof desired changes, e.g., items to synchronize, and then must start theprocedure. As such procedures only commence upon user command,synchronization procedures are limited to occurring only atuser-specified times or at the time of initial device connection. Somesystems have allowed for a degree of spontaneoussynchronization—synchronization may begin for some content types as soonas new content requiring synchronization is detected. In these systems,however, any currently-running synchronization must be completed oraborted before initiating a new synchronization, resulting in aless-than-optimum method.

Yet another type of limitation relates to the synchronization processitself: users generally need to have content items to be synchronizedstored on their computer in some local location. Thus, content itemsgenerally occupy valuable storage space on a user system.

SUMMARY

The arrangement improves the efficiency of the synchronization process.The same ensures that synchronizations of large quantities of contentcan be completed with a minimum of delay. This is accomplished invarious ways. One way is to prioritize the various tasks that are to beperformed prior to synchronization. Another way is to initiate dependenttasks. Yet another way is to allow other content to synchronize in themeantime, increasing the efficiency of the limited transmissionbandwidth.

In another example, a method is provided which allows a user to selectcontent items for synchronization in simple and intuitive ways, usingnatural organizational units of given types of media, here termed“containers”.

In another example, a method is provided which performs automatic or“live” synchronization, in which a user's library is continuallymonitored for changes to the set of content the user has indicatedshould be synchronized, e.g., containers. Synchronization with theportable device then occurs immediately, and continuously, until thesynchronization engine determines that there are no items left to besynchronized. If a synchronization is already in-process, any newsynchronization tasks may be added to, or removed from, thecurrently-synchronizing work flow, obviating the need for a separatesynchronization process to commence.

In another example, a method is provided that allows content to beplaced on a portable player without the intermediate step of having toplace content (and occupy storage space within) a user media contentlibrary, such as on a user's personal computer. For example, using thisarrangement, a user may place a CD of music onto a portable playerwithout having to store the “ripped” music on the user's computer, whichsaves memory or hard disk space.

This Summary is provided to introduce a selection of concepts in asimplified form. The concepts are further described in the DetailedDescription section. Elements or steps other than those described inthis Summary are possible, and no element or step is necessarilyrequired. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended foruse as an aid in determining the scope of the claimed subject matter.The claimed subject matter is not limited to implementations that solveany or all disadvantages noted in any part of this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified functional block diagram of an exemplaryarrangement in which embodiments of the method may be implemented,including a synchronization engine.

FIG. 2 illustrates a simplified functional block diagram of an exemplarycommunication environment in which the methods described herein may beimplemented or used.

FIG. 3 is a flowchart illustrating certain aspects of a synchronizationmethod.

FIG. 4 is a flowchart illustrating more detailed aspects of a stepwithin the synchronization method of FIG. 3.

FIG. 5 illustrates an exemplary user interface on a content managementdevice of a media library by which a user may take advantage of thesynchronization arrangement.

FIG. 6 illustrates an exemplary user interface on a content managementdevice representing a content playback device by which a user may takeadvantage of the synchronization arrangement.

FIGS. 7(A) and 7(B) are flowcharts illustrating more detailed aspects ofa step within the synchronization method of FIG. 3.

FIGS. 8(A) and 8(B1)-(B5) and 8(C1)-(C5) illustrate a series oftime-sequenced block diagrams showing the status of the arrangementafter sequential steps are performed.

FIG. 9 is a flowchart illustrating certain aspects of a synchronizationmethod performed by the arrangement.

FIG. 10 shows an exemplary external drive.

FIG. 11 is a simplified functional block diagram of an exemplaryconfiguration of an operating environment in which the synchronizationarrangement may be implemented or used.

DETAILED DESCRIPTION

The following definitions are used in this description.

“Content items” (elements 120, 120′, and 120″ of FIG. 2), “items ofcontent”, or just “content” are files corresponding to music, movies,television shows, pictures, video clips, etc. The terms represent anycommercial or non-commercial stored digital content. Examples includebut are not limited to digital media content (such as audio files, videofiles, image files, multimedia files, playlists and the like). Contentitems may also include podcasts, which are generally episodic contentmade up of individual content files, plus an RSS-standard XML file thatdefines the series and the context, order, and description of thecontent of the related episodes. Content items may exist in any known orlater developed format or combination thereof, and may be protected byone or more enforceable intellectual property rights of one or morethird parties, such as copyrights, patent rights, trademark rights, ortrade secret rights.

A “content playback device” (element 200 of FIG. 1) is any device thatcan play content items. Some ability to manage the content items thereonis usually accorded, such as the ability to delete a content item or toadd to or modify a playlist. However, in many cases, such functionalityis minimal as users prefer to manage their content on a device where thecontent items may be more easily visualized, such as a “contentmanagement device” described below. An exemplary content playback deviceis a portable music or media player.

A “content management device” (element 100 of FIG. 1) is any devicewhose primary function is to control and manage content items. A contentmanagement device may also play back content items. An exemplary contentmanagement device is a personal computer. A content management devicemay also be, e.g., a mobile phone, on which content items may bedownloaded and played back or synchronized to another device.

“Synchronization” (alternatively elements 600 or 700 of FIG. 3),occurring via a synchronization link (such as link 150 of FIG. 1),refers to the act of making two sets of content items correspond to eachother, one set of content items on each of two different devices,whether content management devices or content playback devices. The twosets need not be identical; rather, the correspondence is generally toadd or delete content items on both, or to manage content items on both.In many cases, content is managed on a content management device and themanaged content is periodically synchronized with a content playbackdevice that the user carries as part of the user's daily routine. Inmany cases, content management devices can store much more than contentplayback devices, and thus it is a subset of content items on a contentmanagement device that is synchronized with a content playback device.Content management devices may also synchronize with content managementdevices—this may occur, e.g., if a user synchronizes content downloadedfrom an online service to a mobile phone, and then synchronizes themobile phone to a portable media player. Synchronization may be partial;that is, only a portion of the content on one device may be synchronizedto another device. This may occur, e.g., when only certain playlists aresynchronized. In the current arrangement, this type of partialsynchronization is performed by the use of containers. Thesynchronization procedure may be automatic or manual, though severalembodiments of the arrangement described here employ automatic or livesynchronization. In this sense, “automatic” or “live” synchronizationmeans a synchronization process that occurs without specific userinitiation of the same. “Automatic” or “live” synchronization alsorefers here to one in which, if a synchronization is in process and theuser or another process causes a new item to require synchronization,then the new item can be added to the queue of the currently-runningsynchronization, i.e., there is no need to finish the currently-runningsynchronization process and start a new one in order to accommodatesynchronization of the new item. Synchronization may also occur if auser has a content library stored online and which is accessed by, e.g.,a web application. In this case, the synchronization may be directlyfrom the online library (or other non-content management device site,such as an external drive) to a content playback device. While the term“synchronization” refers to data and information flowing in bothdirections between a content management device and a content playbackdevice, the term often relates to simply downloading items from acontent management device to a content playback device.

“Online service” (e.g., element 310 of FIG. 2) refers to a repository ofcontent items which is connected to a network and which may be used todownload content items or store chosen content items. In many cases, theonline service is an internet storefront from which is downloaded music,videos, television shows, podcasts, video games, or other digitalcontent items.

A “playlist” is a collection of media files to be played back in a givenorder as determined by the user.

A “container” (elements 102, 102′, 104, 104′, 106, and 106′ of FIG. 1)refers to a natural organizational unit of a given type of media, and isone or a group of content items generally defined by the action of afilter on the media library (element 130 of FIG. 1). For example, formusic content items such as songs, pertinent container types may includealbums, artists, and genres. For podcasts, pertinent container types mayinclude the podcast series object itself, as the podcast is made up of aseries of related by distinct episodes, similar to a television series.Of course, variations may be seen, e.g., podcasts produced by aparticular author or originator. For television shows, pertinentcontainer types may include a season or a series. In many cases,containers may be defined by use of pre-existing metatags, such as ID3tags. In other cases, containers may be defined or customized by users,e.g., such as is the case with playlists. For photos or videos,pertinent container types may include date of capture or the folder inwhich they are stored. Container definitions may be stored by thecontent management device, so that future changes in the user'scollection, such as addition of new content or removal of old contentwhich matches the selected containers, is automatically synchronizedwith (or removed from) the portable player without further userinteraction.

Finally, a “container” may be “associated” with a content playbackdevice when the same is the subject of an operation that transfers,copies, or otherwise causes the content items in the container to beplaced onto the content playback device. This may be performed by asimple drag-and-drop operation or by any number of other such similarprocedures.

Turning to the drawings, where like numerals designate like componentsor steps, FIG. 1 illustrates an exemplary content management device 100connected to a content playback device 200 using a synchronization link150. The content management device 100 includes a content managementapplication 105, part of which is a synchronization engine 110. Thecontent management application 105 controls how the content managementdevice 100 interacts, controls, modifies, and adds and removes contentitems. The content management device 100 has stored thereon a set ofcontent items 120, shown in FIG. 1 as content item 1, content item 2, .. . , content item I, . . . , up to content item N. The content items120 are associated with metadata, such as ID3 tags, that in many casesprovide identifying or other bibliographic information about the contentitems. The metadata may be stored as part of each content item's file.The collection of all the content items 120 is referred to as a medialibrary 130.

Using the metadata or other such information, one or more containers102, 104, 106 (corresponding to containers 1, 2, and 3) may be defined,created, or generated. The containers 102, 104, 106 may be formed by theaction of a filter on a content media library 130, and may be formedautomatically or in a custom fashion. The containers may generallyinclude content items in a “natural” organization unit. For example, onecontainer may include all songs by a particular artist, or all songsfrom an album. Another container may include all shows from a televisionseries, or all shows for that series from a given season. Anothercontainer may include all podcasts from a chosen publisher. Anothercontainer may include all songs of a given genre.

The content management application may automatically create numeroussuch containers according to a predefined scheme, and the scheme may beupdated periodically. For example, containers may be created thatcorrespond to, for music, any and all albums, any and all artists, andany and all genres represented.

Custom containers, which may be formed on the basis of user input, maybe created in either a passive or an active sense. In the former,containers may be formed such as “most played”. In the latter,containers may be formed such as “highest rated”. Custom containers mayalso incorporate complicated filtering schemes, e.g., all alternativemusic of the 1980s from British bands.

FIG. 1 also shows a synchronization link 150. The synchronization link150 may be wired, such as a USB cable, or wireless, such as an IR link,Bluetooth, or 802.11 wifi. Any other wired or wireless scheme, currentor later-developed, may also be employed.

FIG. 1 also shows an exemplary content playback device. The contentplayback device 200 includes a content playback application 205, whichcontrols and management the content items 120′ as well as theirmodification and playback. The content playback application 205typically is occupied with controlling playback, but some modificationcapabilities may also be provided and performed, such as an ability toadd an item to a playlist, alter its rating, delete the item, and so on.The content items 120′ may be the same as content items 120, or may be asubset thereof. Generally, items 120 that are organized into containers102, 104, and 106 and for which the containers have been involved in adrag-and-drop operation onto the content playback device 200, describedbelow, are also present on the content playback device 200 as items120′. The content items 120′ may similarly be organized into containers102′, 104′, and 106′, and may be played back according to theirplacement in those containers, or may be played back in any other way,such as using playlists. The collection of all the content items 120′ isreferred to as a media library 130′. The user controls operation of thecontent playback device 200 by manipulation of items on a screen 207having a user interface.

FIG. 2 illustrates another view of the arrangement of FIG. 1,emphasizing the communications environment. Again, a content managementdevice 100, here shown as a laptop, is connected via the synchronizationlink 150 to a content playback device, here shown as a portable mediaplayer. The content items 120 and 120′ are shown on each, respectively.The content management device 100 includes an external drive 125. Theexternal drive 125 may be, e.g., an internal or external hard drive orCD/DVD-ROM drive. The external drive 125 may be a partition on the harddrive within the laptop or even a different folder, and may even bestored content accessible by a wired or wireless network. In general,the external drive 125 is separate from a main media content library.

The content management device 100 may be connected to a network 300 viaa wired link 114 or a wireless link 108. The content playback device 200may also be connected to the network 300 via a link; a wireless link 112is shown, although a wired link is also possible (not shown). Anexemplary online service 310 is shown within the network, the samegenerally includes a set of content items 120″, which the user maypurchase and download either immediately or perform a download-on-demandlater, at a time of the user's convenience.

FIG. 3 is a flowchart illustrating certain exemplary methods. Details ofthese methods are described in the following figures.

First, an initial optional step is shown of creating a media library 130(step 400). In many cases, a media library will already have beencreated.

A next step is to create containers (step 450). As noted above,containers may be generated in a number of ways, such as by the actionof a filter on the media library 130. In more detail, as shown in FIG.4, containers may be created (step 450) via analysis of metadata andautomatic creation of containers (step 452), via user customization(step 454), and/or via analysis of user data (step 456), such as numberof times a given content item has been played. A combination of all ofthese steps may also be performed. User history, which may be analyzedusing an intelligent network, e.g., an expert system, may also be usedto develop containers that may be especially pertinent to the user.

Referring back to FIG. 3, a next step is to select containers forsynchronization (step 500). One way of performing this step is to“drag-and-drop” the containers onto an icon of the content playbackdevice 200. In this way, the virtual object (of the container) isclicked-on and then dragged on top of another virtual object (the iconof the content playback device). This action associates the containerwith the content playback device 200. This association generallycontinues until a contrary operation is performed, such as the userdragging-and-dropping the container off of or away from the contentplayback device. The drag-and-drop operation can of course be replacedwith any number of user operations that may serve to associate thecontainer with the content playback device 200.

FIG. 5 illustrates a user interface that may be employed to carry outsuch steps. A user interface 458 for the media library 130 is shownalong with icons for display of music 460, videos 462, pictures 464, andpodcasts 466. In FIG. 5, it is presumed that the music icon has beenselected, although an analogous description may apply for the othericons. Within the music interface, icons are shown for display of allartists 470, all albums 472, and all songs 468. Other icons may beprovided as desired. For example, album covers 474 are also displayed,along with a summary of the total file size and playing time of allsongs 482. The individual playing time for a given song is shown incolumn 476 adjacent the song title. Adjacent the playing time column maybe a heart or the like to indicate a favorable rating 477 for the givensong. Additional hearts may be provided to indicate even more favorableratings, and any other such rating scheme may also be employed. Finally,column 478 indicates that the song has been synchronized with thecontent playback device.

A content playback device or portable media player icon 480 is displayedin FIG. 5, and it is by dragging icons onto the icon 480 that containersare selected and associated. In particular, the dragged icon representsmetadata, and all content items with that metadata are then filtered andscheduled for synchronization with the content playback device. The dragoperation creates rules based on what type of item is dragged. In thisway, synchronization rules are derived without users needing to knowanything about them. For example, if a user drags an artist icon ontoicon 480, then an artist container is created, and all songs by thatartist will be synchronized. If a user drags an album icon onto icon480, then an album container is created, and all songs in that albumwill be synchronized. If a user drags a heart icon onto icon 480, then afavorable rating container is created, and all songs with favorableratings will be synchronized. Various other containers are possible. Forexample, in an interface where genres are displayed, if a user drags agenre icon onto icon 480, then a genre container is created, and allsongs with that genre will be synchronized.

By clicking on the content playback device icon, or via an analogousprocedure, the content items on the content playback device may bedisplayed. Referring to FIG. 6, a user interface 458′ is displayed thatallows the user to view the contents of the media library 130′ of thecontent playback device. Icons are shown for display of music 460′,videos 462′, pictures 464′, and podcasts 466′. In FIG. 6, it is presumedthat the music icon has been selected, although an analogous descriptionmay apply for the other icons. Within the music interface, icons areshown for display of all artists 470′, all albums 472′, and all songs468′. As above, album covers 474′ are also displayed, along with asummary of the total file size and playing time of all songs 482′. Theindividual playing time for a given song is shown in column 476′adjacent the song title. Adjacent the playing time column may be a heartor the like to indicate a favorable rating 477′ for the given song.Additional hearts may be provided to indicate even more favorableratings, and any other such rating scheme may also be employed. Finally,column 478′ indicates that the song has been synchronized with thecontent playback device. In some user interfaces, this or other columnsmay be hidden, especially as songs on the content playback device havegenerally all undergone some level of synchronization. However, in somecases, where content items are placed on the content playback devicewithout storage on the content management device, as described below,then a different icon (or no icon) may be displayed.

A number of containers 484-488 are also displayed on the left-hand-sideof the interface of FIG. 6. These containers represent the containersthat the user has associated with the content playback device 200, suchas via a drag-and-drop operation. In FIG. 6, the container 484 is agenre container for alternative music, the container 485 is an albumcontainer for Album 10, the container 486 is a playlist container for aRoadtrip Playlist, the container 487 is an artist container for Artist1, and the container 488 is a track container containing all the musicitems simply listed and playable by track.

Following the association operation, a synchronization step may occur.The arrangement provide several types of synchronization operations,which may be employed separately or in combination.

In one type of synchronization operation, a live or automaticsynchronization of containers may occur (step 600). Referring to FIG.7(A), in this type of synchronization operation, synchronization beginswithout the need for a specific user initiation, i.e., the user need notpress any sort of “BEGIN SYNCHRONIZATION” button or the like. In thisway, synchronization may occur whenever needed, and thus can efficientlyconsume resources whenever available, rather than having to wait for auser command. Of course, a user initiation is not intended to beprecluded by the arrangement, and the like may be provided as a useroption. In this connection, a “STOP SYNCHRONIZATION” button may beprovided, the same serving to stop all synchronizations, no matter themethod used to accomplish the synchronization, including the methodsdescribed here. This button may be toggled to either stop or beginsynchronizations as desired by the user.

Live synchronization may be accomplished in at least one of three ways,which may also occur in various combinations. In one way, asynchronization operation may simply occur periodically (step 602). Inthis way, synchronization occurs every few minutes or on any otherschedule as determined by the content management device or user. In asecond way, a synchronization operation occurs whenever the contentmanagement device 100 detects a change in a container 102 (step 604).For example, if a content item 120 is added to a container 102, and thecontainer 102 is associated with the content playback device 200, then asynchronization operation may occur as soon as is feasible, e.g.,immediately or soon thereafter, without user initiation. In the sameway, if a drag-and-drop operation is performed on a container, again asynchronization operation may occur as soon as is feasible.

In a third way, and referring in addition to FIG. 7(B), acurrently-running synchronization operation may be modified when thecontent management device 100 detects a change in a container 102 (step606). In this example, a synchronization operation is being performed(step 608), and a modification is made to a container 102 and detectedby the synchronization engine or content management application (step610). For example, the user may choose additional content items 120,drop them on the content playback device 200, and the synchronizationengine 110 modifies an internal work flow or task list (step 612) to addthe new tasks, i.e., add the new item(s) that require synchronization.In this arrangement the internal work flow or task list is generated,created and maintained in a dynamic fashion, such that new tasks can beadded conveniently. In any case, the modification to the internal workflow or task list may entail altering the status information regardinghow much work is remaining. In any case, the synchronization process iscontinued (step 614) until all required synchronization actions havebeen completed. It should be noted that multiple such additions to asynchronization process may occur, e.g., multiple drag-and-dropoperations or multiple alterations to content items within synchronizedcontainers, and each change results in the addition of tasks to the tasklist or work flow of the currently-running synchronization operation; nonew synchronization operation need be commenced.

In another type of synchronization operation, and referring to FIGS.8(A) and 8(B1)-(B5) and 8(C1)-(C5), synchronization is performed usingprioritized processing and initiation of dependent tasks (step 700). Inparticular, the arrangement allows for a producer/consumer model in thesynchronization engine where the same is responsible for consumingincoming tasks in an, e.g., FIFO system. Tasks may include transferring,updating, and deleting files to or from the content playback device. Thetasks are provided by a producer which is, e.g., monitoring the medialibrary for items that need the above actions performed. The producermay also monitor the content playback device for the same.

As tasks are added to a work queue, the synchronization engine reviewsthem and determines when an action is capable of being immediatelyperformed, where “immediately performed” means, for example, that atransfer can occur without any prerequisite tasks first being performedon the content item. If it is, the action is performed and a pointermoves to the next task. If the action is not capable of beingimmediately performed, then the synchronization engine queues a new taskof higher priority that is necessary before the initial action can beperformed, i.e., a prerequisite task. The pointer is reset to, e.g., thebeginning of the queue. Once either of the tasks is performed, thepointer moves to the next item and repeats the process. If resources areavailable to take action on the next task, the next task is performed;otherwise, it moves on to the next item in the queue. In this way,increased efficiency is obtained in use of limited I/O bandwidth and/orCPU capabilities.

In certain versions of the above arrangement, it is noted that theentire work queue may be reviewed or re-evaluated to ensure that thehighest priority tasks are performed first, and that the performance ofall the tasks is done in a manner to minimize the overallsynchronization time.

Referring in particular to the exemplary FIGS. 8(B1) and 8(C1), asynchronization engine 110 includes a transfer module 702 having anassociated content item slot 702′, a download module 704 havingassociated content item slots 704′, 704″, and 704′″, and a conversionmodule 706 having an associated content item slot 706′. The differingnumbers of content item slots refer to the differing number of processesthat can be contemporaneously performed. In this exemplary arrangement,only one content item can be transferred, from a content managementdevice to a content playback device, at a time, so only one content itemslot is provided. Three content items can be downloaded at a time, sothree content item slots are provided. Only one content item can beconverted at a time, such as in format or bitrate, so only one contentitem slot is provided. It should be noted that the number of slots isgenerally variable, and can be determined by the arrangement on-the-fly,e.g., by analysis of CPU function. If a processor is running slowly,then less slots may be provided, and vice-versa for a relativelyunoccupied processor.

FIG. 8(C1) shows a list of the files 711-714 to be synchronized, as wellas a pointer 715 to the first task to be performed. In FIG. 8(C1), it isnoted that the pointer 715 points to a task that has not yet begun to beperformed. Also in these figures, for clarity while the pointer ispointing at particular content items, it is understood that the pointerwould typically point to the first of a series of tasks to be performedto, e.g., transfer the content items. Having the pointer point to thecontent item itself is a shorthand employed for clarity's sake.

In the example of FIGS. 8(B1) and 8(C1), content item A needs to beconverted to a format compatible with the content playback device, B andC need to be downloaded from an online service such as a web store, andD can be transferred immediately. The files are queued in the orderabove and as shown in FIG. 8(C1).

As the synchronization engine 110 reaches content item A (element 711),the same determines that a conversion is necessary before the transferof the item 711 can occur. Consequently a conversion task is queuedahead of the transfer of the item 711, and this transfer is marked asdependent on the conversion. In FIG. 8(B2), the item 711 has been movedto a conversion module and parentheses surround content item A in FIG.8(C2) to indicate that the same has a task that requires completionprior to transfer. The conversion of item 711 can begin immediately,even though only one item can be converted at a time, as no items arecurrently being converted by the conversion module 706.

The transfer of content item B (item 712) may then begin; however, thesynchronization engine 110 determines that a download is necessarybefore the transfer of the item 712 can occur. Consequently a downloadtask is queued ahead of the transfer of the item 712, and this transferis marked as dependent on the conversion. In FIG. 8(B3), the item 712has been moved to a download module and parentheses surround contentitem B in FIG. 8(C3) to indicate that the same has a task that requirescompletion prior to transfer. The download of item 712 can beginimmediately, as three items can be downloaded at a time, and as no itemsare currently being downloaded by the download module 704.

The transfer of content item C (item 713) may then begin; however, thesynchronization engine 110 determines that a download is necessarybefore the transfer of the item 713 can occur. Consequently a downloadtask is queued ahead of the transfer of the item 713, and this transferis marked as dependent on the conversion. In FIG. 8(B4), the item 713has been moved to a download module and parentheses surround contentitem C in FIG. 8(C4) to indicate that the same has a task that requirescompletion prior to transfer. The download of item 713 can beginimmediately, as three items can be downloaded at a time, and only oneitem is currently being downloaded by the download module 704.

The transfer of content item D (item 714) may then begin; in this case,the transfer of the item 714 can begin immediately, as no items arecurrently being transferred by the transfer module 702 and the item 714requires no pre-processing.

At this step in the sequence four tasks are happening contemporaneously.When the conversion of content item A, or the download of content item Bor C, is completed, their respective transfers are re-attempted. It maybe found that yet another task is prerequisite to the transfer, e.g., itmay be that content item B or C has to be converted, in which caseanother prerequisite task is queued ahead of the same's transfer.

If a content item E (not shown) were now introduced to the queue butrequired conversion, its conversion would be queued ahead of itstransfer, but since there are no free conversion slots, the conversionitself would be delayed until a free resource was available. Similarly,if two more downloads were required, the first would start immediatelywhile the second would be delayed until one of the three activedownloads completed.

In alternative arrangements, the availability of resources (e.g., forconversion, download, etc.) may be self-adjusting based on pastexperience, network utilization, etc.

In another aspect of the method and user interface, as may be seen bycomparing FIGS. 5 and 6, a background image 459 may be displayed on theinterface for the content playback device 200. The background image 459may be the same as a background image displayed on the screen 207 of thecontent playback device 200, although the image 459 may be reproduced asmore of a watermark, in order to ensure legibility of the userinterface. In particular, the user may customize the background imageseen when navigating the contents of the content playback device usingthe device's user interface. For example, a personal photo may be seenwhich has been previously synchronized with the device. When viewing thecontents of the device using the interface of FIG. 6, the samebackground image may be seen (though it may be resized or tiled orstretched as appropriate and desired). By keeping the pictures the same,the user is provided with a valuable customization. The user is alsoprovided with a cognitive link that indicates to the user that they arecurrently viewing the contents of their device, as opposed to viewingthe media library contents of, e.g., their personal computer.

In another aspect of the arrangement, content items 120 may besynchronized to the content playback device 200 without adding thecontent item files to the user's media library 130. In particular, usersmay desire to place content items 120 directly on a content playbackdevice 200 as part of media library 130′ but without occupying space intheir main media library 130. For example, many news items, lectures,podcasts, are only listened to once, and thus permanent storage isunnecessary and may be undesirable. Another example may be a data CDfull of music files or the like, which are archived and need notnecessarily be stored on the user's hard drive. Moreover, a data CD fullof music files is not always available in the same way as a hard drivegenerally is. This method is further intended to encompass content itemsstored in an online store and downloaded on demand directly to a contentplayback device. In this way, users may, e.g., listen to an album priorto downloading the same onto their hard drive.

In this method, the user may copy content from a normally-offlinelocation, e.g., external drive 125, directly onto their content playbackdevice. This allows the content items to be transferred but to notclutter the user's media library 130. In one implementation, metadataassociated with the transferred files may still be maintained in themedia library 130, allowing other functionality associated with thesynchronization engine to apply to those content items, e.g., automaticcontent management such as ongoing metadata updates if the originalfiles are altered in some way.

Referring to FIG. 9, a method is shown to accomplish the above. First,offline content, such as the external drive 125, is detected (step 720).Next, either a subset of the detected offline content may be selected tobe placed on the content playback device (step 722), or the entirecontents of the detected offline content may be selected to be placed onthe content playback device (step 724). The particular files desired tobe synchronized may be chosen by review of the files on whichever diskor other source they reside. Referring to FIG. 10, a menu such as isgiven for My Computer may allow the user to navigate to the particularfile or folder and drag-and-drop the same onto the content playbackdevice icon. This type of operation may be used to indicate that theitems are not to be stored on the content management device. On theother hand, dragging the items onto a content management device icon(not shown) or anywhere on the content management device user interface(see FIG. 5) may indicate that the items are to be added to the medialibrary 130. In an analogous procedure for adding items to the contentplayback device, the content playback device user interface may includea “GET OFFLINE CONTENT” button that which selected allows the user tonavigate to a file or folder and to indicate that the same should beadded to the content playback device, bypassing the content managementdevice.

In any case, and referring back to FIG. 9, the metadata from the offlinecontent may be optionally stored in the media library of the contentmanagement device (step 726). The same may be stored in a hiddenfashion, so that various actions the user may take are applied to theoffline content on the content playback device, while not appearing inthe content management device user interface and confusing the user.Finally, the metadata and the content items themselves are copied,transferred, or otherwise placed onto the content playback device (step728).

Thus, it can be seen that the arrangements described enable a convenientway to synchronize a content management device with a content playbackdevice.

FIG. 10 is a block diagram of an exemplary configuration of an operatingenvironment 730 (such as a client-side device or application or anetworked server or service) in which all or part of synchronizationengine 110 and/or the methods shown and discussed in connection with thefigures may be implemented or used. Operating environment 730 isgenerally indicative of a wide variety of general-purpose orspecial-purpose computing environments, and is not intended to suggestany limitation as to the scope of use or functionality of thearrangements described herein.

As shown, operating environment 730 includes processor 732,computer-readable media 734, and computer-executable instructions 736.One or more internal buses 740 may be used to carry data, addresses,control signals, and other information within, to, or from operatingenvironment 730 or elements thereof.

Processor 732, which may be a real or a virtual processor, controlsfunctions of the operating environment by executing computer-executableinstructions 736. The processor may execute instructions at theassembly, compiled, or machine-level to perform a particular process.

Computer-readable media 734 may represent any number and combination oflocal or remote devices, in any form, now known or later developed,capable of recording, storing, or transmitting computer-readable data,such as the above-noted computer-executable instructions 736, includinguser interface functions 738 and synchronization engine 110, and contentitems 120. In particular, the computer-readable media 734 may be, or mayinclude, a semiconductor memory (such as a read only memory (“ROM”), anytype of programmable ROM (“PROM”), a random access memory (“RAM”), or aflash memory, for example); a magnetic storage device (such as a floppydisk drive, a hard disk drive, a magnetic drum, a magnetic tape, or amagneto-optical disk); an optical storage device (such as any type ofcompact disk or digital versatile disk); a bubble memory; a cachememory; a core memory; a holographic memory; a memory stick; a papertape; a punch card; or any combination thereof. The computer-readablemedia may also include transmission media and data associated therewith.Examples of transmission media/data include, but are not limited to,data embodied in any form of wireline or wireless transmission, such aspacketized or non-packetized data carried by a modulated carrier signal.

Computer-executable instructions 736 represent any signal processingmethods or stored instructions. Generally, computer-executableinstructions 736 are implemented as software components according towell-known practices for component-based software development, andencoded in computer-readable media. Computer programs may be combined ordistributed in various ways. Computer-executable instructions 736,however, are not limited to implementation by any specific embodimentsof computer programs, and in other instances may be implemented by, orexecuted in, hardware, software, firmware, or any combination thereof.

Input interface(s) 742 are any now known or later developed physical orlogical elements that facilitate receipt of input to operatingenvironment 730.

Output interface(s) 744 are any now known or later developed physical orlogical elements that facilitate provisioning of output from operatingenvironment 730.

Network interface(s) 746 represent one or more physical or logicalelements, such as connectivity devices or computer-executableinstructions, which enable communication between operating environment730 and external devices or services, via one or more protocols ortechniques. Such communication may be, but is not necessarily,client-server type communication or peer-to-peer communication.Information received at a given network interface may traverse one ormore layers of a communication protocol stack.

Specialized hardware 748 represents any hardware or firmware thatimplements functions of operating environment 730. Examples ofspecialized hardware include encoder/decoders decrypters,application-specific integrated circuits, clocks, and the like.

The methods shown and described above may be implemented in one or moregeneral, multi-purpose, or single-purpose processors. Unlessspecifically stated, the methods described herein are not constrained toa particular order or sequence. In addition, some of the describedmethods or elements thereof can occur or be performed concurrently.

Functions/components described herein as being computer programs are notlimited to implementation by any specific embodiments of computerprograms. Rather, such functions/components are processes that convey ortransform data, and may generally be implemented by, or executed in,hardware, software, firmware, or any combination thereof.

It will be appreciated that particular configurations of the operatingenvironment may include fewer, more, or different components orfunctions than those described. In addition, functional components ofthe operating environment may be implemented by one or more devices,which are co-located or remotely located, in a variety of ways.

Although the subject matter herein has been described in languagespecific to structural features and/or methodological acts, it is alsoto be understood that the subject matter defined in the claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

It will further be understood that when one element is indicated asbeing responsive to another element, the elements may be directly orindirectly coupled. Connections depicted herein may be logical orphysical in practice to achieve a coupling or communicative interfacebetween elements. Connections may be implemented, among other ways, asinter-process communications among software processes, or inter-machinecommunications among networked computers.

The word “exemplary” is used herein to mean serving as an example,instance, or illustration. Any implementation or aspect thereofdescribed herein as “exemplary” is not necessarily to be constructed aspreferred or advantageous over other implementations or aspects thereof.

As it is understood that embodiments other than the specific embodimentsdescribed above may be devised without departing from the spirit andscope of the appended claims, it is intended that the scope of thesubject matter herein will be governed by the following claims.

1-20. (canceled)
 21. A content playback device comprising: one or moreprocessors; and a computer-readable medium storing instructions whichwhen executed by the processors cause the processors to: at leastpartially synchronize a first plurality of content items stored on thecomputer-readable medium and a second plurality of content items storedon a content management device by performing a list of tasks; during thesynchronization, detect a user-directed addition, deletion ormodification of a content item in one of the first or second pluralityof content items; and responsive to the detecting, dynamically modifythe task list to add, delete or modify the content item, respectively,in the other of the first or second plurality of content items.
 22. Thecontent playback device of claim 21, the computer-readable mediumfurther comprising instructions that cause the processors to: continuethe synchronization of the first plurality of content items and thesecond plurality of content items such that the synchronization includesthe user-directed addition, deletion or modification of the contentitem.
 23. The content playback device of claim 21 wherein at least aportion of the first plurality of content items is organized into atleast a first container and at least a portion of the second pluralityof content items is organized into at least a second container, each ofthe containers being defined by action of a filter on a media library.24. The content playback device of claim 23, the instructions fordynamically modifying the task list further comprise instructions thatcause the processor to: detect a change in one of the first container orthe second container wherein the change corresponds to one of theuser-directed addition, deletion or modification of the content item inone of the first or the second plurality of content items.
 25. Thecontent playback device of claim 24, the computer-readable mediumfurther comprising instructions that cause the processors to: modify thetask list to respectively add, delete or modify the content itemcorresponding to the user-directed addition, deletion or modification.26. The content playback device of claim 25, wherein the instructionsfor modifying the task list further comprise instructions that cause theprocessors to: alter status information regarding work remaining forcompletion of the synchronization; and continue the synchronizationuntil required synchronization tasks from the task list are completed.27. The content playback device of claim 21, wherein the instructionsfor detecting a user-directed addition, deletion or modification of acontent item cause the processor to: detect multiple user-directedadditions, deletions or modifications of multiple content items in thefirst or the second plurality of content items during thesynchronization.
 28. The content playback device of claim 27, whereinthe instructions for detecting multiple user-directed additions,deletions or modifications of multiple content items cause the processorto: detect multiple drag-and-drop operations corresponding to one ormore of the first plurality of content items and the second plurality ofcontent items.
 29. The content playback device of claim 27, wherein theinstructions for detecting multiple user-directed additions, deletionsor modifications of multiple content items cause the processors to: addmultiple tasks to the task list of the synchronization withoutcommencing a new synchronization process, wherein each of the addedmultiple tasks corresponds to a respective one of the multipleuser-directed additions, deletions and modifications.
 30. The contentplayback device of claim 21, wherein the instructions for synchronizingthe first plurality of content items and the second plurality of contentitems cause the processors to: prioritize processing by initiatingdependent tasks.
 31. A method comprising: synchronizing, by a processor,a first plurality of content items organized into at least a firstcontainer and a second plurality of content items organized into atleast a second container based on an internal work flow; detecting, bythe processor, at least one change in at least one of the firstcontainer and the second container during the synchronization;responsive to the detection, adding, by the processor, a task to theinternal work flow; and responsive to the addition of the task,altering, by the processor, status information regarding work remainingfor completion of the synchronization.
 32. The method of claim 31,further comprising: continuing, by the processor, the synchronizationuntil the internal work flow is completed.
 33. The method of claim 31,wherein the synchronizing based on the internal work flow furthercomprises: transferring, updating and deleting, by the processor, filesto or from one of the first container and the second container.
 34. Themethod of claim 31, further comprising: dynamically creating andmaintaining, by the processor, the internal work flow such that newtasks can be added thereto; and receiving, by the processor from aproducer monitoring a media library associated with the first and secondcontainers, the new tasks for adding to the internal work flow.
 35. Themethod of claim 31, wherein synchronizing the first plurality of contentitems and the second plurality of content items further comprises:reviewing the new tasks added to the internal work flow; identifying asynchronization action capable of being immediately performed such thatnone of the new tasks pending in the internal work flow are prerequisitefor the performance of the synchronization action; and performing thesynchronization action.
 36. The method of claim 35, whereinsynchronizing the first plurality of content items and the secondplurality of content items further comprises: moving a pointer to a nexttask in the internal work flow.
 37. A content management devicecomprising: one or more processors; and a computer-readable mediumstoring instructions which when executed by the processors cause theprocessors to: execute a synchronization process based on a task list,the synchronization process synchronizes a first plurality of contentitems organized into at least a first container and a second pluralityof content items organized into at least a second container; detect atleast one change occurring in at least one of the first container andthe second container during the synchronization process; responsive tothe detection, add a task to the task list; and responsive to theaddition of the task, alter status information regarding work remainingfor completion of the synchronization process.
 38. The contentmanagement device of claim 37 wherein the first plurality of contentitems are stored on the computer-readable medium.
 39. The contentmanagement device of claim 37 wherein the instructions for detecting atleast one change cause the processor to: detect multiple changesexecuted via multiple drag-and-drop processes; and add multiple tasks tothe task list of the synchronization process without commencing a newsynchronization process, wherein each of the multiple tasks correspondsto a respective one of the multiple changes.
 40. The content managementdevice of claim 39, wherein the instructions for executing thesynchronization process cause the processor to: review tasks added tothe task list; determine when a synchronization action is capable ofbeing immediately performed with no prerequisite tasks pending in thetask list; performing the synchronization action; and moving a pointerto a next task in the task list.